#ifndef __SEMAFORO_H_INCLUDED__
#define __SEMAFORO_H_INCLUDED__

#include "GenericException.h"

class Semaforo{
private:
	int semid;

public:
	/** 
	 * Crea un semáforo privado.
	 * 
	 * @param valorInicial El valor inicial del semáforo.
	 */
	Semaforo(int valorInicial=0) throw (GenericException);

	/** 
	 * Cambia el valor del semáforo.
	 * 
	 * @param valor El valor a asignar al semaforo.
	 * 
	 * @return TRUE si tuvo éxito. FALSE si falla.
	 */
	bool setValue(int valor);

	void wait();

	void signal();

	~Semaforo();
};

#endif //__SEMAFORO_H_INCLUDED__
